МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА”
/
Кафедра ЕОМ
Лабараторна робота №2
з дисципліни
" Теорія інтелектуальних систем”
на тему:
Моделювання простих форм цілеспрямованої поведінки. Дослідження роботи цілеспрямованих автоматів (Learning Automata) у стаціонарному випадковому середовищі.
Львів – 2017
НАЗВА: Моделювання простих форм цілеспрямованої поведінки. Дослідження роботи цілеспрямованих автоматів (Learning Automata) у стаціонарному випадковому середовищі.
МЕТА: Змоделювати та дослідити роботу цілеспрямованого автомату у стаціонарному випадковому середовищі.
Хід роботи
Завдання:
N
Модель оптимальної поведінки
Конструкція ЦА
Кількість доступних агенту дій
1
W1
AL
2
w1 – сумарний виграш
AL -> Автомат з лінійною тактикою (автомат М.Л.Цетліна)
Пропишемо кількість доступних агенту дій
#define NACTIONS 2
Пропишемо шляхи до файлів результатів та налаштувань, які повинні згенеруватись:
Пройдемося в циклі і запишемо в файлі сумарний викраш для ідеального, випадкового агенту та автомата (де T – кількість ітерацій між агентом та середовищем)
Результат роботи програми:
/
Рис.1 Діаграма для RA, PA, LA
/
Рис.2 Дисперсія для RA, PA, LA
LA -1 ряд
RA-2 ряд
PA-3 ряд
До досліду з попередньої лабараторної додався автомат з лінійною тактикою.
Кількість доступних агенту дій буде наступною:
nA = 2
LA type = 2
LA memory size = 8
====================
p(a0) = 0.357067
p(a1) = 0.677633
Лістинг програми:
#define ENVTYPE 0
#define NACTIONS 2
#define NSTATES 2
#define NSTEPS 200
#define NREPLICAS 1000
#define REWARD 1//+1
#define PENALTY 0//-1
#define LATYPE 2 //3 //4
#define LAMEMSIZE 8
// ----------------------------------------------------------------------------
// final simulation results
float sumRm[NSTEPS]; // mean values of sumR(t)
float sumRv[NSTEPS]; // corresponding variances
// files for parameters and results
char * par_file_name = "c:\\Users\\ Desktop\\TIS\\2\\lab2.parameters.dat";
FILE * par_file;
char * RA_res_file_name = "c:\\Users\\Desktop\\TIS\\2\\lab2.RA.results.dat";
FILE * RA_res_file;
char * PA_res_file_name = "c:\\Users\\Desktop\\TIS\\2\\lab2.PA.results.dat";
FILE * PA_res_file;
char * LA_res_file_name = "c:\\Users\\Desktop\\TIS\\2\\lab2.LA.results.dat";
FILE * LA_res_file;
// ----------------------------------------------------------------------------
// initialization of stationary environment
void seInit(void)
{
for (int i = 0; i < nA; i++)
sePa[i] = (float)rand() / (float)RAND_MAX;
}
// save parameters in file
void saveParameters(void)
{
int i, j;
if ((par_file = fopen(par_file_name, "w")) == NULL) {
fprintf(stderr, "Cannot open file <%s> for parameters of experiment.\n", par_file_name);
}
fprintf(par_file, "T = %d\n", T);
fprintf(par_file, "n = %d\n", n);
fprintf(par_file, "env = %d\n", env);
fprintf(par_file, "nA = %d\n", nA);
if (env) fprintf(par_file, "nS = %d\n", nS);
fprintf(par_file, "LA type = %d\n", LATYPE);
fprintf(par_file, "LA memory size = %d\n", memSize);
fprintf(par_file, "====================\n");
switch (env)
{
case 0: // se (stationary environment)
for (i = 0; i < nA; i++)
fprintf(par_file, "p(a%d) = %f\n", i, sePa[i]);
break;
case 1: // ce (commutative environment)
// probabilities of rewards
for (i = 0; i < nS; i++)
{
for (j = 0; j < nA; j++)
fprintf(par_file, "p(s%d,a%d) = %f\n", i, j, cePa[i][j]);
if (i < nS - 1) fprintf(par_file, "--------------------\n");
}
fprintf(par_file, "\n====================\n");
// probabilities of state transition
for (i = 0; i < nS; i++)
{
for (j = 0; j < nS; j++)
fprintf(par_file, "p(s%d,s%d) = %f\n", i, j, cePs[i][j]);
fprintf(par_file, "--------------------\n");
}
break;
default: printf("lab2 error: wrong env model code specified\n");
}
fclose(par_file);
}
// save results of random agent
void saveResultsRA(void)
{
int i;
if ((RA_res_file ...